{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### MSE loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAELCAYAAAA2mZrgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xd8VFXex/HPL50USiotIfReQwuoFMGCCGsBwYrig+wqurrNXVd3dVd39bGvay+gIkVdhUUUFQmihCogoYUWSKghQAqQOuf5I5M8EZMwSWbmTmZ+79drXky5M/M9GTK/nHvOPVeMMSillFIAflYHUEop5Tm0KCillKqkRUEppVQlLQpKKaUqaVFQSilVSYuCUkqpSloUlFJKVdKioJRSqpIWBaWUUpUCrA5QV9HR0SYxMbFezz1z5gxhYWHODWQRbYtn8pa2eEs7QNtSYePGjSeMMTEX2q7RFYXExEQ2bNhQr+empKQwcuRI5wayiLbFM3lLW7ylHaBtqSAiBxzZTncfKaWUqqRFQSmlVCUtCkoppSppUVBKKVVJi4JSSqlKWhSUUkpV0qKglFKqks8UhSO55/hsXzFlNj39qFKq8XlvzQEy820ufx+fKQqbDp7mw/QSvk3PtjqKUkrVyZHcc/xlURprj5S6/L18piiM6R5H0yCYu/ag1VGUUqpOFqzPxGbgkrauX4TCZ4pCUIAfF7cJ5JudxziSe87qOEop5ZAym2HB+kwu7hxNbKjrv7J9pigAjIgPwGZg4fosq6MopZRDUnYd50huITcOTnDL+/lUUYgN9ePiztEsWH9QB5yVUo3CB2sPEh0ezJgecW55P58qCgBTBydwOLeQlenHrY6ilFK1Onz6HCt2HWfywLYE+rvn69rnisLYHnFEhwfzgQ44K6U83IL1mRjK/5h1F58rCoH+fkwe2JZvdh7XAWellMcqLbOxcEMmF3eOIT4y1G3v63NFAWDKoARsprwKK6WUJ0rZlW0fYI536/v6ZFFIiAq1DzhnUlrm+iMElVKqruatO0hMRDCXdnfPAHMFnywKADcOTuBIbiEr9QhnpZSHsWKAuYLPFoUxPeKIidABZ6WU56kYYJ4yyH0DzBV8tihUDDiv2HWcw6d1wFkp5RlKy2wsWJ/JJW4eYK7gs0UByquwQQeclVKeI2VXNkfzCt06DbUqny4K8ZGhXNw5RgeclVIe44N1B4mNCObS7rGWvL9PFwWAGwfHczSvkJRdOuCslLLWodPnSNl1nMkD490+wFzB54vCpd3tA87rdMBZKWWtigHmGwa599iEqny+KFQMOKfsOs4hHXBWSlmkfID5oGUDzBVcVhREJF5EVojIDhHZJiL3VbONiMiLIrJHRH4UkQGuylMbHXBWSlltxa5sjuUVceMQawaYK7iyp1AK/MYY0x0YCtwtIj3O2+ZKoLP9MgN4xYV5ahQfGcolnWNYsP6gDjgrpSzxwdoD5QPM3awZYK7gsqJgjDlijPnBfj0f2AG0OW+zicC7ptwaoLmItHJVptpMHZzAsbwiVuiAs1LKzQ6dPkdKejY3DIonwKIB5gpueXcRSQT6A2vPe6gNUHWfTRY/LxxucWn3WGIjgvlg7QEr3l4p5cMW2Ce6WDnAXEGMce0ZyEQkHFgJPG6M+c95j30G/MMY85399nLg98aYjedtN4Py3UvExcUlzZ8/v15ZCgoKCA8Pr/Hxj9OLWbKvhKdHNCGqiWePwV+oLY2JtsXzeEs7wPPbUmYz/GblORIi/HhgYEit2zakLaNGjdpojBl4wQ2NMS67AIHAMuCBGh5/DZha5fYuoFVtr5mUlGTqa8WKFbU+nnnyjEl8cIl5ZtnOer+Hu1yoLY2JtsXzeEs7jPH8tixLO2La/WGJWZZ25ILbNqQtwAbjwPe2K2cfCfAWsMMY82wNmy0GbrXPQhoK5Bpjjrgq04W0bRHKiC4xLNigRzgrpdxj3rqDxDUNZrTFA8wVXLmPZDhwCzBaRDbbL+NEZKaIzLRvsxTYB+wB3gB+5cI8DqkYcP56h57DWSnlWpknz5YPMA+0foC5QoCrXtiUjxPIBbYxwN2uylAfl3aLpXWzEOaszuCKXi2tjqOU8mLvrTmAnwhTLT42oSrPKE0eJMDfj1uSE0ndl8POo3lWx1FKeamzxaXMX3eQK3q1pFWzJlbHqaRFoRpTBsUTEujHnNUZVkdRSnmpTzYdIq+wlNuHJVod5Se0KFSjRVgQ1/RvwyebDnHqTLHVcZRSXsYYw+zvM+jdphlJ7VpYHecntCjU4LZhiRSW2Jiv6yEppZzs+z057D5ewLRhiZRP1PQcWhRq0K1lU5I7RPFeaoZOT1VKOdXs1fuJDg9ifF9LVvWplRaFWkwbnsjh3EK+2n7M6ihKKS9xIOcMy3ce58bBCQQH+Fsd52e0KNRiTPc42jRvwjs64KyUcpJ3Uw/gL8JNQ9tZHaVaWhRq4e8n3DasHev2n2Tb4Vyr4yilGrmColIWrs9kXO9WxDWtfZ0jq2hRuIAbBibQJNBfp6cqpRrsPz9kkV9Uyu3DE62OUiMtChfQLDSQawe04dPNhzmp01OVUvVksxlmr86gb3xz+id41jTUqrQoOGDasESKS23Ms695rpRSdbVqzwn2ZZ/xuIPVzqdFwQGd4yK4qFM076UeoESnpyql6mH29/uJiQhmXG/Pm4ZalRYFB00blsjRvEKWbTtqdRSlVCOzL7uAFbuyuWlIAkEBnv2169npPMiobrEkRIYy+/sMq6MopRqZd1MPEOgv3OhBq6HWRIuCg/z9hFuT27HhwCm2Zun0VKWUY/ILS/hwQybj+7QmNsIzp6FWpUWhDiYPiic0yJ/ZOj1VKeWgjzZmcaa4jGkePsBcQYtCHTQNCeT6pLb8d8thThQUWR1HKeXhbDbDnNUZDEhoTt/45lbHcYgWhTq6NTmR4jIbH6zV6alKqdqtTM8mI+cs04a3tzqKw7Qo1FGn2HAu6RLD+2sOUFyq01OVUjV7+/v9xDUN5spGdGpfLQr1cPuwRI7nF/F52hGroyilPNSe4/ms2n2Cm4e0I9C/8XzVNp6kHmRElxjaR4fpgLNSqkZzVh8gyN+PqY1gGmpVWhTqwc9PuC25HZsOnmZz5mmr4yilPEzuuRI+/iGLCf1aEx0ebHWcOtGiUE/XJbUlIjiAN1btszqKUsrDfLD2IGcb0TTUqrQo1FNESCA3Dk3g861HOJBzxuo4SikPUVhSxtvf7+eiTtH0atPM6jh1pkWhAaYPb0+Anx+vf6u9BaVUuU82HSI7v4iZIzpaHaVetCg0QGzTEK4d0IYPN2aRna8Hsynl68pshte/3UevNk0Z3inK6jj1okWhgWZc0oGSMhuzV++3OopSymJfbjvK/hNnmDmiIyJidZx60aLQQB1iwrm8R0veSz1AQVGp1XGUUhYxxvDqyr20iwrlyl6efc6E2mhRcIKZIzuSV1jKPF36QimftWbfSbZk5fI/F3fA369x9hJAi4JT9ItvztAOkbz13X5d+kIpH/Xqyr1EhwdxfVJbq6M0iBYFJ5k5oiNH8wr5dPMhq6Mopdxs++E8VqZnc/vw9oQE+lsdp0G0KDjJiC4xdG/VlNdW7sVmM1bHUUq50Wvf7iUsyJ+bh7SzOkqDaVFwEhFh5ogO7M0+w9c7jlkdRynlJpknz7LkxyPcOCSBZqGBVsdpMC0KTnRV71a0bdGEV1fuxRjtLSjlC95ctQ8/gekXdbA6ilNoUXCiAH8//ufiDvxw8DTrM05ZHUcp5WI5BUUs2JDJL/q1oWUzzz//siNcVhRE5G0ROS4iaTU8PlJEckVks/3yiKuyuNPkgfFEhgXx6sq9VkdRSrnYnNQDFJbYuGuEd/QSwLU9hdnAFRfYZpUxpp/98pgLs7hNkyB/bktO5Judx9l1NN/qOEopFzlbXMq7qRmM7RFHp9gIq+M4jcuKgjHmW+Ckq17fk92a3I4mgf68pr0FpbzW/HWZnD5b0mgXvquJ1WMKySKyRUQ+F5GeFmdxmhZhQUwZHM/iLYc5dPqc1XGUUk5WUmbjre/2MzgxkqR2LayO41TiylkyIpIILDHG9KrmsaaAzRhTICLjgBeMMZ1reJ0ZwAyAuLi4pPnz59crT0FBAeHh4fV6bl3lnLPx+2/PMTohgJu6O//MS+5si6tpWzyPt7QDXNOW7w+V8MbWYn49IJh+sQFOfe3aNKQto0aN2miMGXjBDY0xLrsAiUCag9tmANEX2i4pKcnU14oVK+r93Pq4f/4m0+3Pn5uTBUVOf213t8WVtC2ex1vaYYzz22Kz2cxlz640lz270thsNqe+9oU0pC3ABuPAd7Flu49EpKXY15YVkcGU78rKsSqPK9w1oiPnSsp4N/WA1VGUUk6yYtdxdh3L564RHRrt8ti1ceWU1HlAKtBVRLJEZLqIzBSRmfZNrgfSRGQL8CIwxV7NvEbXlhGM7hbLnNQMzhWXWR1HKeUEr6bso03zJlzdt7XVUVzCZTvDjDFTL/D4S8BLrnp/TzFzREcmv5bKwg2Z3NYIT+KtlPp/Gw+cYl3GSR4Z34NAf6vn6biGd7bKgwxKbMHAdi14deVeCku0t6BUY/bi8t1EhgVxw6B4q6O4jBYFFxMRfj2mC0dyC1mwPtPqOEqpetp44BQr07OZcUkHwoLdN+PI3bQouMHwTlEMSmzByyl7tLegVCP1/NfpRIUFcWty418euzZaFNxARLh/bBeO5RUxb52eslOpxmZ9xklW7T7BzBEdCQ3y3l4CaFFwm2EdoxnSPpKXU3RsQanG5rmv0okOD+bmod7dSwAtCm51/9guZOcX8f4aPW5BqcZizb4cVu/NYeaIDjQJatyn2nSEFgU3GtohimEdo3h15V7OFpdaHUcp5YDnvkonJsI3egngQFEQkUkiEmG//mcR+Y+IDHB9NO90/9gunCgo1t6CUo3A6r0nWLv/JL8a2ZGQQO/vJYBjPYWHjTH5InIRcDkwB3jFtbG816DESC7qFM1rK/dpb0EpD2aM4fmvdhPXNJipgxOsjuM2jhSFilHRq4BXjDGLgCDXRfJ+94/tTM6ZYl0TSSkP9v2eHNZlnOTuUZ18ppcAjhWFQyLyGjAZWCoiwQ4+T9UgqV0kl3SJ4bWVeyko0t6CUp7GGMNzX6fTqlmIVx+9XB1HvtwnA8uAK4wxp4FI4HcuTeUD7h/TmVNnS5izOsPqKEqp86zafYKNB07xq1GdCA7wnV4COFYUWgGfGWN2i8hIYBKwzqWpfED/hBaM6hrDG6v2kV9YYnUcpZSdMYZnv0qnTfMmTB7Y1uo4budIUfgYKBORTsBbQHvgA5em8hG/HtOF02dLmP19htVRlFJ2KenZbM48zd0+2EsAx4qCzRhTClwLPG+MuZ/y3oNqoL7xzbm0WyxvrNpHnvYWlLKcMYbn7L2E65N8r5cAjhWFEhGZCtwKLLHfF+i6SL7l/rFdyCss5Z3vMqyOopTP+2bncX7MyuXeSzsRFOCb82kcafXtQDLwuDFmv4i0B953bSzf0atNM8b2iOPN7/aRe057C0pZpWLGUUJkKNcO8M1eAjhQFIwx24HfAltFpBeQZYz5p8uT+ZBfj+lMfmEpb3233+ooSvmsr7YfI+1QHveM7uS1Z1VzhCPLXIwEdgP/Bl4G0kXkEhfn8ik9Wzfjip4teee7/eSe1d6CUu5mjOH5r3fTLiqUa/u3sTqOpRwph88AlxljRhhjLqF8qYvnXBvL99w3pjP5RaW8sWqf1VGU8jnLth1j+5E87h3dmQAf7iWAY0Uh0Bizq+KGMSYdHWh2uu6tmnJVn1a89d1+jucVWh1HKZ9RUmbjqWU76RATxsR+ra2OYzlHisIGEXlLREbaL28AG10dzBf97rKulNpsPPtVutVRlPIZ89dnsi/7DA9e0c3newngWFH4JbANuBe4D9gO3OXKUL4qMTqMW4YmsnBDJruO5lsdRymvl19YwgtfpzO4fSRje8RZHccjODL7qMgY86wx5lpjzDXGmOeA99yQzSfNGt2JsOAA/vH5DqujKOX1Xlu5jxMFxTw0rjsiYnUcj1DfvlKyU1OoSi3Cgpg1uhMpu7L5bvcJq+Mo5bWO5J7jjVX7mNC3NX3jm1sdx2PoDjQPdGtyIm1bNOHxpTsosxmr4yjllZ75Mh1j4HeXd7U6ikepsSiIyIAaLkno7COXCgn053eXd2XHkTw+2XTI6jhKeZ3th/P4+Icspg1PJD4y1Oo4HiWglseeqeWxnc4Oon7q6j6tefu7/Tzz5S6u6t2KJkG+t1qjUq5gjOGJpTto1iSQu0d2sjqOx6mxKBhjRrkziPopPz/hT+O6c8Pra3j7+/3cPUr/8yrlDCvTs/luzwkeHt+DZqG60+N8OqbgwYZ0iGJsjzheSdnLiYIiq+Mo1eiV2Qz/WLqTdlGh3DK0ndVxPJIWBQ/34JXdOFdSxgtf77Y6ilKN3kcbM9l1LJ8/XNHNZ5fGvhD9qXi4jjHh3Dg4gQ/WHWTP8QKr4yjVaJ0tLuWZL9MZkNCcK3u1tDqOx6pt9tHNVa4PP++xe1wZSv3UfWM60yTQnye/0PF9perrjW/3czy/iIeu0gPValNbT+GBKtf/dd5jd7ggi6pBdHgwvxzZka+2H2PNvhyr4yjV6BzPK+S1b/cyrndLktpFWh3Ho9VWFKSG69XdVi42/aL2tGoWwhNLd2DTA9qUqpPnvk6npMzG7y/vZnUUj1dbUTA1XK/u9s+IyNsiclxE0mp4XETkRRHZIyI/isgAB/L6rJBAf357WVd+zMrlvz8etjqOUo3GoXwbC9ZncvPQdiRGh1kdx+PVVhS62b+st1a5XnHbkePCZwNX1PL4lUBn+2UG8IqDmX3WNf3b0KNVU576YhfFZdpbUMoRC9KLCQsO4N7Rna2O0ijUdkRz94a8sDHmWxFJrGWTicC7xhgDrBGR5iLSyhhzpCHv6838/ISHrurOTW+uZfnBIC6zOpBSHu77PSf4MbuMP17ZjRZhQVbHaRRqO6L5QNXbIhIFXAIcNMY44yQ7bYDMKrez7Pf9rCiIyAzKexPExcWRkpJSrzcsKCio93M9SZ8YfxbtKSJ52Tc0D278s4q95XMB72mLN7Sj1Gb46+pzRAYb2pceJCUl88JP8nDu+FxqLAoisgR40BiTJiKtgB+ADUBHEXndGPN8A9+7usHqaveJGGNeB14HGDhwoBk5cmS93jAlJYX6PteTJPQs4LJnV7LiVAtemNLf6jgN5i2fC3hPW7yhHW98u4+sgh3M6h/CZZd6x6o97vhcavszs70xpmKQ+HbgK2PM1cAQnDMlNQuIr3K7LaAjqA7oEBPOuA6BLNp8mNV79JwLSp3vSO45nvs6ndHdYhkQq4tJ1kVtRaGkyvVLgaUAxph8wOaE914M3GqfhTQUyNXxBMeN7xBIQmQof16URlFpmdVxlPIoj/13OzZjeHRCTz1QrY5qKwqZIjJLRK4BBgBfAIhIExw4n4KIzANSga4ikiUi00VkpojMtG+yFNgH7AHeAH7VgHb4nCB/4dGJPdmXfYY3V+23Oo5SHmPFruN8nnaUWaM767kS6qG22UfTgceAMcANxpjT9vuHAu9c6IWNMVMv8LgB7nYwp6rGqK6xXNmrJS8u382Evq31F0D5vMKSMv6yaBsdYsK48+L2VsdplGrsKRhjjhtjZhpjJhpjvqxy/wpjzNPuiacu5JGre+DvJ/xl8TbK66xSvuvlFXs4ePIsf5/Yi+AAHUuoj9pmHy2u7YnGmAnOj6PqqlWzJtw/pguPL93Bl9uPcXlPXf1R+aZ92QW8unIfE/u1ZlinaKvjNFq17T5Kpvw4gnnAWnS9I481bXgiH/+QxaOLt3FRp2jCgmv7WJXyPsYYHlm0jeAAPx66qkHH3fq82gaaWwJ/AnoBLwBjgRPGmJXGmJXuCKccE+jvx99/0YvDuYW8+I2ejEf5niU/HuG7PSf47eVdiY0IsTpOo1bbmEKZMeYLY8xtlA8u7wFSRGSW29Iphw1MjGTywLa8tWo/u47mWx1HKbfJLyzhb0u206tNU27WU2w2WK1rJIhIsIhcC7xP+UyhF4H/uCOYqrsHr+xOeEgAD3+apoPOymc882U62QVFPP6L3vj76V7uhqrtzGtzgNWUH6PwqDFmkDHmb8aYQ25Lp+okMiyIB6/oxrqMk3z8g35MyvulHcrl3dQMbhqSQN/45lbH8Qq19RRuAboA9wGrRSTPfskXkTz3xFN1NXlgPAMSmvPE0h2cPltsdRylXMZmM/z50zQiw4L43WV68hxnqW1Mwc8YE2G/NK1yiTDGNHVnSOU4Pz/h77/oTe65Ep5atsvqOEq5zPz1mWzOPM2fxnWnWegFF1lQDmr86y6rn+nRuinThiUyb91BNh08ZXUcpZzuREERT36xkyHtI7mmfxur43gVLQpe6v6xXYiNCOahT9IoKXPG+oVKeY4nlu7gTFEpf/9FL13wzsm0KHip8OAA/np1T7YfyeOVlL1Wx1HKaZbvOMZ/fjjEXSM60Dkuwuo4XkeLghe7sncrJvRtzYvLd5N2KNfqOEo12KkzxTz4n610axnBvZfqOZddQYuCl3tsYk8iw4J4YOFmCkv0vAuqcfvzojROny3m2cn9dME7F9Gi4OWahwbx5PV9SD9WwHNfpVsdR6l6W7zlMJ/9eIRfj+lCj9Y6AdJVtCj4gFFdY5k6OIHXV+1jfcZJq+MoVWfH8gp5+NM0+sU3565LOlgdx6tpUfARD13VnbYtmvCbhVs4U1RqdRylHGaM4Q8f/0hRaRnPTO5LgL9+bbmS/nR9RHhwAE9f35fMU2d5YukOq+Mo5bD56zNJ2ZXNH67oRseYcKvjeD0tCj5kSIcopg9vz9y1B1mZnm11HKUuKPPkWf6+ZDvJHaK4LTnR6jg+QYuCj/nt5V3pFBvO7z/aQu7ZEqvjKFUjm83wmw+3ICL876Q++OkKqG6hRcHHhAT68+zkvpwoKOYvi9OsjqNUjd7+fj/r9p/kkat70LZFqNVxfIYWBR/Up21z7hnViU83H+bzrUesjqPUz+w+ls9Ty3Yxpnssk5LaWh3Hp2hR8FH3jO5E7zbN+NMnW8nOL7I6jlKVSspsPLBwC2FB/jxxbW9d28jNtCj4qEB/P56d3JczxWX88T9b9UxtymP8e8Ueth7K5fFreuv5li2gRcGHdY6L4HeXdeXrHcf0TG3KI2zNyuWlb/YwsV9rxvVuZXUcn6RFwcfdcVF7BidG8ujibWSePGt1HOXDzhaX8sDCzUSFB/HYhF5Wx/FZWhR8nL+f8MzkvojAzPc36qJ5yhLGGB76JI092QU8PamvnknNQloUFPGRoTw7uR/bDufx18XbrI6jfND7aw/yyaZD3D+mCxd3jrE6jk/ToqAAGNMjjrtHdWT++kwWrs+0Oo7yIZszT/PYf7cxsmsM94zqZHUcn6dFQVV6YGxXhneK4s+L0vSkPMotTp4p5lfvbySuaQjP39BPj1r2AFoUVCV/P+HFKf2JCgvil3M36jIYyqXKbIb75m/ixJliXrkpieahQVZHUmhRUOeJCg/m3zcN4GhuIfcv3IzNpscvKNd44et0Vu0+wWMTetK7bTOr4yg7LQrqZwYktODPV/Xgm53HeTllj9VxlBf6ZucxXvxmD5OS2nLDoHir46gqtCioat2a3I6J/VrzzFfprNqty2wr58k8eZb7F2yhR6um/O0XvXQZCw/j0qIgIleIyC4R2SMiD1bz+DQRyRaRzfbLna7MoxwnIvzj2t50jg3nvvmbOXz6nNWRlBcoLClj5vsbMcbw6s1JhAT6Wx1JncdlRUFE/IF/A1cCPYCpItKjmk0XGGP62S9vuiqPqrvQoABeuTmJopIyfjn3B4pK9cA21TB/XbyNbYfzeHZyPxKidDlsT+TKnsJgYI8xZp8xphiYD0x04fspF+gYE87/TurLlszTPP6ZnsZT1d/C9ZnMX5/J3aM6MqZHnNVxVA1cWRTaAFWPgsqy33e+60TkRxH5SER0xMkDjevdiv+5uD3vph7g0026cJ6qu7RDuTy8KI3hnaJ4YGxXq+OoWoirlkwWkUnA5caYO+23bwEGG2NmVdkmCigwxhSJyExgsjFmdDWvNQOYARAXF5c0f/78emUqKCggPNw7Tvzt7raU2gxPrS8kI9fGQ0NDaNfUefuC9XPxPM5sR36x4bHUc5QZ+OuwJjQNcu/Asrd8JtCwtowaNWqjMWbgBTc0xrjkAiQDy6rc/iPwx1q29wdyL/S6SUlJpr5WrFhR7+d6Givaciz3nBn6xNdm0N+/MgdzzjjtdfVz8TzOaseZohIz8aXvTJeHlpqNB0465TXryls+E2Ma1hZgg3Hgu9uVu4/WA51FpL2IBAFTgMVVNxCRqgumTwB0p7UHi20awuzbB1NYUsZt76zj1JliqyMpD1ZaZmPWB5v4Mes0L07tz4CEFlZHUg5wWVEwxpQC9wDLKP+yX2iM2SYij4nIBPtm94rINhHZAtwLTHNVHuUcXVtG8MatA8k6eY47392gS22rahn7UtjLdx7nsYm9uLxnS6sjKQe59DgFY8xSY0wXY0xHY8zj9vseMcYstl//ozGmpzGmrzFmlDFmpyvzKOcY0iGK56f044eDp5g1bxOlZTarIykP8/zXu1mwIZN7RnXi5qHtrI6j6kCPaFb1Mq53K/4yvgdfbT/GI4u36TmeVaUP1h7kheW7mZTUlt9c1sXqOKqOAqwOoBqvacPbczSviFdX7qVl0xDuvbSz1ZGUxb7afow/f7qVkV1jeOLa3rqERSOkRUE1yB+u6MrxvEKe/Sqdlk1DmKyLm/msjQdOMWveD/Ru04yXbxpAoL/uiGiMtCioBhERnry+D9kFRfzxk61ERwQxupserepr9hwvYPqc9bRsGsJb0wYRGqRfLY2VlnLVYIH+frxycxLdW0Vw99xNbM48bXUk5UbH8gq57e11BPgJc+4YTHR4sNWRVANoUVBOER4cwNvTBhEdEcQds9ezL7vA6kjKDfIKS5j2znpOnS3m7WmDaBcVZnUk1UBaFJTTxEaE8O4dQwC47Z11HM8vtDiRcqWi0jJmvreR3cfyeeXmJPqxr4IlAAAS4UlEQVS0bW51JOUEWhSUU7WPDuPtaYM4kV/MlNfW6HkYvNS54jLunLOB1XtzePK6PozoEmN1JOUkWhSU0/WLb8670weTnV/EpFdTyThxxupIyonyCku49e21fLfnBE9d14frktpaHUk5kRYF5RKDEiP54H+Gcra4lEmvpbLraL7VkZQTnDxTzE1vrGXTwdO8OKW/TkH2QloUlMv0btuMBXclI8ANr6fyY5bOSmrMjucVcsNrqew6ls/rtyZxdd/WVkdSLqBFQblUl7gIPpyZTHhwADe+sZZ1+09aHUnVQ+bJs0x6LZXDp88x+/ZBeiyKF9OioFyuXVQYH85MJrZpMLe+vZaV6dlWR1J1sDe7gMmvpXLqTDHv3zmEYR2jrY6kXEiLgnKLVs2asPCuZDpEh3PnnPV8kXbE6kjKAdsP5zH51VRKymwsuCuZ/npOBK+nRUG5TXR4MPNmDKV3m2b8au4PfLwxy+pIqhY/HDzFlNdTCQ7wY+FdyXRv1dTqSMoNdIES5VbNmgTy3vQhzHhvA7/5cAtni0vR+SueZ3tOGS99s5bYiGDev3MIbVuEWh1JuYn2FJTbhQUH8NZtgxjTPZaHF23jk93F2Gx6PgZP8d8th3l2YyHxLUJZeFeyFgQfo0VBWSIk0J9Xbk7iugFtWbS3hDvmrOf0WT3ns5VKymw8+t9tzJq3icSmfsyfMZTYpiFWx1JupkVBWSbQ34+nJ/Xh1h5BfL/nBOP/9R1ph3KtjuWTjuYWMvX1NbzzfQa3D0/kwcEhtAgLsjqWsoAWBWUpEWF0QiAL70rGZjNc+8pqFqw/aHUsn7J67wnG/2sV24/k8a+p/fnL1T0J8NMzpvkqLQrKI/RPaMGSey9mSPtI/vDxVn7/0RYKS8qsjuXVjDG8unIvN7+5lmZNAll093A9Slnp7CPlOSLDgph9+2Be+DqdF7/ZQ9qhPF69OYmEKB3odLa8whJ+u3ALX24/xlV9WvHkdX0ID9avA6U9BeVh/P2EBy7rytvTBnLo9DnG/2sVy3ccszqWV9lxJI8J//qOb3Ye55HxPXhpan8tCKqSFgXlkUZ3i2PJrIuIjwxl+pwNPL1sF2U6bbXB/vNDFte8/D3nSsqYP2Mod1zUHhEdP1D/T4uC8ljxkaF8/MthTBkUz0sr9jD19TWkH9MluOvjeH4h9y/YzAMLt9AvvjlLZl3MwMRIq2MpD6R9RuXRQgL9+ed1fRiUGMnfPtvOuBdWcfvwRO4b00V3eTigtMzGe2sO8OyX6RSV2rj30s7cO7oTAf7696Cqnlf8VpWUlJCVlUVhYe3nBG7WrBk7duxwUyrXqqktISEhtG3blsDAQAtSuc51SW0Z1S2W/122kze/28/iLYf581U9GN+nle7+qMGGjJM8vGgbO47kcXHnaB6d0JMOMeFWx1IeziuKQlZWFhERESQmJtb6BZGfn09ERIQbk7lOdW0xxpCTk0NWVhbt27e3KJnrRIYF8Y9r+zB5YDwPL0pj1rxNzFt3kMcm9qRTrHd8rs5woqCIf36+k482ZtGqWQiv3DSAK3q11OKpHOIVRaGwsPCCBcEXiAhRUVFkZ3v3+Qr6J7Rg0d0X8cG6g/zvFzu54vlVTL+4PfeO7kyYD+9SKrMZ5q49wNPLdnGupIxfjuzIrNGdCA3y3Z+Jqjuv+d/i6wWhgq/8HPz9hFuGtmNcr5Y8+cVOXlu5j0WbDvPw+B6M6+17fxVvPHCKRxalse1wHsM7RfHohF50itVdRarudLTJjTIyMvjggw+sjuFVosKDeer6vnz8y2Qiw4K4+4MfmPL6GpbvOOYTK69uzjzNrHmbuO6V1ZwoKOKlG/vz/vQhWhBUvXlNT6ExqCgKN954488eKy0tJSBAP476SmoXyeJ7hjN37UFeSdnL9DkbaBcVyq3JiUwa2JamId4z8F5cauPztCO8830GmzNPEx4cwMwRHblndCedkaUazDd7CnPnQmIi+PmV/zt3boNe7uGHH+aFF16ovP3QQw/x4osv/my7Bx98kFWrVtGvXz+ee+45Zs+ezaRJk7j66qu57LLLSElJYfz48ZXb33PPPcyePRuAjRs3MmLECJKSkrj88ss5evRogzJ7owB/P24blsiqP4zipRv7Ex0ezN+WbCf5ieX8ZVEae7MLrI7YINn5Rbzw9W6GP/kN983fTN65Eh6d0JM1f7qUB6/spgVBOYXv/S+aOxdmzICzZ8tvHzhQfhvgppvq9ZLTp0/n2muv5b777sNmszF//nzWrVv3s+3++c9/8vTTT7NkyRIAZs+eTWpqKj/++CORkZGkpKRU+/olJSXMmjWLRYsWERMTw4IFC3jsscd477336pXX2wX6+zG+T2vG92nNj1mnmb06g3nrMpmTeoARXWK4fXgil3SOwa+RrAS6NSuXd1bvZ8mWIxSX2RjZNYZpwxpXG1Tj4XtF4aGH/r8gVDh7tvz+ehaFxMREoqKi2LRpE8eOHaN///5ERUU59NyxY8cSGVn7kaW7du0iLS2NsWPHAlBWVkZMTEy9svqaPm2b8+zkfvzxyu7MW3eQ99YcYNo76+kQHcaNQxIY2TWWjjFhHjcwfTS3kFW7s5m/PpONB04RFuTP1MHx3DoskY56rIFyIZcWBRG5AngB8AfeNMb887zHg4F3gSQgB7jBGJPhykwcrGGt/prud9Cdd97J7NmzOXr0KHfccYfDzwsLC6u8HhAQgM1mq7xdcTCeMYaePXuSmppa+Vh+vi73UBcxEcHce2lnZo7oyOdpR5i9OoO/f7aDv3+2g9iIYIZ1jGJYp2iGdYyy5PSTJ88Uk7o3h9V7T5C6N4d9J84A0C4qlEfG9+B6LxsXUZ7LZUVBRPyBfwNjgSxgvYgsNsZsr7LZdOCUMaaTiEwBngRucFUmABISyncZVXd/A1xzzTU88sgjlJSU1DjDKCIiotYv83bt2rF9+3aKioooLCxk+fLlXHTRRXTt2pXs7GxSU1NJTk6mpKSEHTt2MHjw4AZl9kVBAX5M7NeGif3acCDnDKv35rB6bw7f7TnBp5sPA5AQGcqwjlEk2y+xEQ6cknLu3PLe5qxZMG0aPP54rT3P/MIS1u0/Wfn+O47kARAW5M+QDlHcOCSB5I5RdG/ZVHcRKbdyZU9hMLDHGLMPQETmAxOBqkVhIvBX+/WPgJdERIwxrptL+PjjPx1TAAgNLb+/AYKCghg1ahTNmzfH39+/2m369OlDQEAAffv2Zdq0abRo0eInj8fHxzN58mT69OlD586d6d+/f+Vrf/TRR9x7773k5uZSWlrKzJkztSg0ULuoMNpFhTF1cALGGHYfL2D1nhN8vzeHz7YeYf76TAA6RIfRunkTosKDiAoLtv8bRFR4+fXo5V8Qdf8sQnNPUWyEwyfPkPPQPziRH0DOoOHkFBSRc6aYEwVF5BQUczy/iPRj+ZTZDEEBfgxs14LfXd6V5I5R9G7TjEBdl0hZyJVFoQ2QWeV2FjCkpm2MMaUikgtEASdclqrir7eHHirfZZSQcMG/6hxhs9lYs2YNH374YY3bBAYGsnz58p/cN23atJ/cfuqpp3jqqad+9tx+/frx7bffVt7W3UfOJSJ0iYugS1wE04a3p8xm2HY4l9V7c9h08BTZ+UVkZp4lp6CYgqLS857dFGa+R1BpCcUnAuFXs8vvzgAytgAQHOBHdHgw0eFBtGwazJjusSR3jGJAQgtCAqv/I0IpK7iyKFTX5z2/B+DINojIDGAGQFxc3M9m6TRr1syhL8mysrLy7SZMKL9U1YAv2Z07dzJ58mTGjx9Py5Yt3fKFXdmWahQWFtY4k8kTFRQUeGzebkC3+IpbAgRTXBZEfrEhr+KSnkG+zZ8Cmz/+zcOJzj9JU78yIvxKadqnO02DhGD/iqPNS+2XsxRnHmFNZg1vbDFP/kzqSttSN64sCllAfJXbbYHDNWyTJSIBQDPg5PkvZIx5HXgdYODAgWbkyJE/eXzHjh0OLXTnqgXxBg0axP79+ytvb926lVtuueUn2wQHB7N27VqnvWdtbQkJCanc9dQYpKSkcP5n2qgkJlaOU6U8/TQjH/5t+f3t2kFGhmWxGqLRfyZVaFvqxpVFYT3QWUTaA4eAKcD5h/IuBm4DUoHrgW9cOp7gJr1792bz5s1Wx1Du4qJxKqWs4LKiYB8juAdYRvmU1LeNMdtE5DFggzFmMfAW8J6I7KG8hzDFVXmUcpmq41RQ3kNwwjiVUlZw6XEKxpilwNLz7nukyvVCYJKT3svjDkCyghd0tBqnm24qv6SkNNpdRkqBl6x9FBISQk5Ojs9/IVacZCckxIF59UopVQ2vWOaibdu2ZGVlXfDkMoWFhV7zhVlTWypOx6mUUvXhFUUhMDDQodNPpqSkNKpZObXxprYopTyHV+w+Ukop5RxaFJRSSlXSoqCUUqqSNLYZOyKSDVSzzKlDonHlukrupW3xTN7SFm9pB2hbKrQzxlzwRCyNrig0hIhsMMYMtDqHM2hbPJO3tMVb2gHalrrS3UdKKaUqaVFQSilVydeKwutWB3AibYtn8pa2eEs7QNtSJz41pqCUUqp2vtZTUEopVQuvLgoiMklEtomITURqHLEXkQwR2Soim0VkgzszOqoObblCRHaJyB4RedCdGR0lIpEi8pWI7Lb/26KG7crsn8lmEVns7pw1udDPWESCRWSB/fG1IpLo/pSOcaAt00Qku8rncKcVOS9ERN4WkeMiklbD4yIiL9rb+aOIDHB3Rkc50JaRIpJb5TN5pLrt6s0Y47UXoDvQFUgBBtayXQYQbXXehraF8vNW7AU6AEHAFqCH1dmryfkU8KD9+oPAkzVsV2B11vr8jIFfAa/ar08BFliduwFtmQa8ZHVWB9pyCTAASKvh8XHA55SfU3UosNbqzA1oy0hgiave36t7CsaYHcaYXVbncAYH2zIY2GOM2WeMKQbmAxNdn67OJgJz7NfnAL+wMEtdOfIzrtq+j4BLxTNP9tFY/r9ckDHmW6o5lW8VE4F3Tbk1QHMRaeWedHXjQFtcyquLQh0Y4EsR2SgiM6wO0wBtgKqngs+y3+dp4owxRwDs/8bWsF2IiGwQkTUi4imFw5GfceU2xphSIBeIcku6unH0/8t19l0uH4lIfDWPNwaN5XfDUckiskVEPheRns584Ua/dLaIfA20rOahh4wxixx8meHGmMMiEgt8JSI77dXarZzQlur+GrVkelltbanDyyTYP5cOwDcistUYs9c5CevNkZ+xx3wOF+BIzv8C84wxRSIyk/Ie0GiXJ3O+xvKZOOIHypesKBCRccCnQGdnvXijLwrGmDFOeI3D9n+Pi8gnlHer3V4UnNCWLKDqX3JtgcMNfM16qa0tInJMRFoZY47Yu/DHa3iNis9ln4ikAP0p3wduJUd+xhXbZIlIANAMC3cH1OKCbTHG5FS5+QbwpBtyuYLH/G40lDEmr8r1pSLysohEG2Ocsr6Tz+8+EpEwEYmouA5cBlQ76t8IrAc6i0h7EQmifJDTY2btVLEYuM1+/TbgZ70gEWkhIsH269HAcGC72xLWzJGfcdX2XQ98Y+wjhB7mgm05b7/7BGCHG/M502LgVvsspKFAbsUuzMZGRFpWjFGJyGDKv8dzan9WHVg90u7iUfxrKP8LoQg4Biyz398aWGq/3oHyWRdbgG2U76qxPHt92mK/PQ5Ip/wvak9tSxSwHNht/zfSfv9A4E379WHAVvvnshWYbnXu2n7GwGPABPv1EOBDYA+wDuhgdeYGtOUf9t+LLcAKoJvVmWtoxzzgCFBi/z2ZDswEZtofF+Df9nZupZbZiFZfHGjLPVU+kzXAMGe+vx7RrJRSqpLP7z5SSin1/7QoKKWUqqRFQSmlVCUtCkoppSppUVBKKVVJi4JSSqlKWhSUagD7MsZL6vicaSLS2lWZlGoILQpKud80yg86VMrjaFFQqhoi8jcRua/K7cdF5N4aNg+3ryC6U0TmVlmC4BERWS8iaSLyun2JhespP3J7rv0EKU3c0BylHKZFQanqvYV9/SIR8aN8XaC5NWzbH/g10IPyZVOG2+9/yRgzyBjTC2gCjDfGfARsAG4yxvQzxpxzYRuUqjMtCkpVwxiTAeSISH/KF0ncZH66YmhV64wxWcYYG7AZSLTfP8p+Os6tlC837dR175VyhUa/dLZSLvQm5fv/WwJv17JdUZXrZUCAiIQAL1O+8FqmiPyV8oXylPJo2lNQqmafAFcAg4BldXxuRQE4ISLhlC+hXSEfiGh4PKWcT3sKStXAGFMsIiuA08aYsjo+97SIvEH5Ms0ZlJ+7oMJs4FUROQck67iC8iS6dLZSNbAPMP8ATDLG7LY6j1LuoLuPlKqGiPSg/CQ5y7UgKF+iPQWlHCAivYH3zru7yBgzxIo8SrmKFgWllFKVdPeRUkqpSloUlFJKVdKioJRSqpIWBaWUUpW0KCillKr0f620rjEKoQwPAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def mse_loss(y, y_hat):\n",
    "    return np.square(y - y_hat)\n",
    "\n",
    "y = 0\n",
    "y_hat = np.arange(-1.5, 1.6, 0.1)\n",
    "loss = mse_loss(y, y_hat)\n",
    "plt.figure()\n",
    "plt.scatter(y, 0, c=\"red\", label=\"y_true\")\n",
    "plt.plot(y_hat, loss)\n",
    "plt.ylabel(\"MSE Loss\")\n",
    "plt.xlabel(\"y_hat\")\n",
    "plt.legend()\n",
    "plt.grid()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### MAE loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def mae_loss(y, y_hat):\n",
    "    return np.abs(y - y_hat)\n",
    "\n",
    "y = 0\n",
    "y_hat = np.arange(-1.5, 1.6, 0.1)\n",
    "loss = mae_loss(y, y_hat)\n",
    "plt.figure()\n",
    "plt.scatter(y, 0, c=\"red\", label=\"y_true\")\n",
    "plt.plot(y_hat, loss)\n",
    "plt.ylabel(\"MAE Loss\")\n",
    "plt.xlabel(\"y_hat\")\n",
    "plt.legend()\n",
    "plt.grid()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### MSE and MAE "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 936x288 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "y = 0\n",
    "y_hat = np.arange(-1.5, 1.6, 0.1)\n",
    "mae = mae_loss(y, y_hat)\n",
    "mse = mse_loss(y, y_hat)\n",
    "plt.figure(figsize=(13, 4))\n",
    "plt.subplot(1, 2, 1)\n",
    "plt.scatter(y, 0, c=\"red\", label=\"y_true\")\n",
    "plt.plot(y_hat, mae, label=\"MAE\")\n",
    "plt.plot(y_hat, mse, label=\"MSE\")\n",
    "plt.ylabel(\"Loss\")\n",
    "plt.xlabel(\"y_hat\")\n",
    "plt.legend()\n",
    "plt.grid()\n",
    "\n",
    "y = 0\n",
    "y_hat = np.arange(-10, 10.1, 0.1)\n",
    "mae = mae_loss(y, y_hat)\n",
    "mse = mse_loss(y, y_hat)\n",
    "plt.subplot(1, 2, 2)\n",
    "plt.scatter(y, 0, c=\"red\", label=\"y_true\")\n",
    "plt.plot(y_hat, mae, label=\"MAE\")\n",
    "plt.plot(y_hat, mse, label=\"MSE\")\n",
    "plt.ylabel(\"Loss\")\n",
    "plt.xlabel(\"y_hat\")\n",
    "plt.legend()\n",
    "plt.grid()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Huber loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 936x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def huber_loss(y, y_hat, delta=1.0):\n",
    "    loss = list()\n",
    "    errs = np.abs(y - y_hat)\n",
    "    for err in errs:\n",
    "        if err <= delta:\n",
    "            l = 0.5 * err ** 2\n",
    "        else:\n",
    "            l = delta * err - 0.5 * delta ** 2\n",
    "        loss.append(l)\n",
    "    return np.asarray(loss)\n",
    "    \n",
    "y = 0\n",
    "y_hat = np.arange(-2.0, 2.1, 0.1)\n",
    "huber = huber_loss(y, y_hat)\n",
    "plt.figure(figsize=(13, 4))\n",
    "plt.subplot(1, 2, 1)\n",
    "plt.scatter(y, 0, c=\"red\", label=\"y_true\")\n",
    "plt.plot(y_hat, huber, label=\"Huber\")\n",
    "plt.scatter(1.0, 0.5, c=\"black\")\n",
    "plt.scatter(-1.0, 0.5, c=\"black\")\n",
    "plt.plot([-1.0, -1.0], [0.0, 0.5], ls=\"--\", c=\"black\", alpha=0.5)\n",
    "plt.plot([1.0, 1.0], [0.0, 0.5], ls=\"--\", c=\"black\", alpha=0.5)\n",
    "plt.plot([1.0, -1.0], [0.5, 0.5], ls=\"--\", c=\"black\", alpha=0.5)\n",
    "plt.ylabel(\"Loss\")\n",
    "plt.xlabel(\"y_hat\")\n",
    "plt.legend()\n",
    "plt.grid()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Quantile loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def quantile_loss(y, y_hat, r=0.5):\n",
    "    loss = list()\n",
    "    errs = y - y_hat\n",
    "    for err in errs:\n",
    "        if err <= 0:\n",
    "            l = (1 - r) * np.abs(err)\n",
    "        else:\n",
    "            l = r * np.abs(err)\n",
    "        loss.append(l)\n",
    "    return np.asarray(loss)\n",
    "\n",
    "y = 0\n",
    "y_hat = np.arange(-1.5, 1.6, 0.1)\n",
    "loss = mae_loss(y, y_hat)\n",
    "plt.figure()\n",
    "plt.scatter(y, 0, c=\"red\", label=\"y_true\")\n",
    "plt.plot(y_hat, quantile_loss(y, y_hat, r=0.2), label=\"r=0.2\", lw=2.0)\n",
    "plt.plot(y_hat, quantile_loss(y, y_hat, r=0.5), label=\"r=0.5\", lw=2.0)\n",
    "plt.plot(y_hat, quantile_loss(y, y_hat, r=0.6), label=\"r=0.6\", lw=2.0)\n",
    "plt.ylabel(\"Quantile Loss\")\n",
    "plt.xlabel(\"y_hat\")\n",
    "plt.legend()\n",
    "plt.grid()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Cross Entropy Loss"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 二分类"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/abbo/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:2: RuntimeWarning: divide by zero encountered in log\n",
      "  \n",
      "/Users/abbo/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:2: RuntimeWarning: invalid value encountered in multiply\n",
      "  \n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def cross_entropy_loss_binary(y, y_hat):\n",
    "    return -(y * np.log(y_hat) + (1 - y) * np.log(1 - y_hat))\n",
    "\n",
    "y = 0\n",
    "y_hat = np.arange(0.0, 1.0 + 1e-4, 0.01)\n",
    "loss = cross_entropy_loss_binary(y, y_hat)\n",
    "plt.figure()\n",
    "plt.scatter(y, 0, c=\"blue\", label=\"y_true = 0\")\n",
    "plt.plot(y_hat, cross_entropy_loss_binary(y, y_hat), label=\"\")\n",
    "\n",
    "y = 1\n",
    "plt.scatter(y, 0, c=\"orange\", label=\"y_true = 1\")\n",
    "plt.plot(y_hat, cross_entropy_loss_binary(y, y_hat), label=\"\")\n",
    "plt.ylabel(\"Cross Entropy Loss\")\n",
    "plt.xlabel(\"y_hat\")\n",
    "plt.xlim((-0.1, 1.1))\n",
    "plt.legend()\n",
    "plt.grid() \n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Hinge Loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def hinge_loss(y, y_hat):\n",
    "    return np.maximum(0, 1.0 - np.sign(y)*y_hat)\n",
    "\n",
    "y = 1\n",
    "y_hat = np.arange(-2, 2 + 1e-4, 0.1)\n",
    "plt.figure()\n",
    "plt.plot(y_hat, hinge_loss(y, y_hat))\n",
    "plt.ylabel(\"Hinge Loss\")\n",
    "plt.xlabel(\"y_hat\")\n",
    "plt.grid()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
